<?php

Secutiry::allow(
    array('ClienteController' 	=> array(
            'index'   			=> array('required' => true,   'perfil' => array(PerfilAcesso::$cliente), 'pagina'=>'/home/seguranca'),
			'historico'   		=> array('required' => true,   'perfil' => array(PerfilAcesso::$cliente), 'pagina'=>'/home/seguranca'),
			'acesso'  	 		=> array('required' => true,   'perfil' => array(PerfilAcesso::$cliente), 'pagina'=>'/home/seguranca'),
			'pessoal'   		=> array('required' => true,   'perfil' => array(PerfilAcesso::$cliente), 'pagina'=>'/home/seguranca'),
			'editPessoal'      => array('required' => true,   'perfil' => array(PerfilAcesso::$cliente), 'pagina'=>'/home/seguranca'),
			'savePessoal'      => array('required' => true,   'perfil' => array(PerfilAcesso::$cliente), 'pagina'=>'/home/seguranca'),
			'social'   			=> array('required' => true,   'perfil' => array(PerfilAcesso::$cliente), 'pagina'=>'/home/seguranca'),
			'endereco'   		=> array('required' => true,   'perfil' => array(PerfilAcesso::$cliente), 'pagina'=>'/home/seguranca'),
			'editEndereco'   	=> array('required' => true,   'perfil' => array(PerfilAcesso::$cliente), 'pagina'=>'/home/seguranca'),
			'saveEndereco'   	=> array('required' => true,   'perfil' => array(PerfilAcesso::$cliente), 'pagina'=>'/home/seguranca'),
			'enderecoPadrao'   	=> array('required' => true,   'perfil' => array(PerfilAcesso::$cliente), 'pagina'=>'/home/seguranca'),
			'verPedido'     => array('required' => true,   		'perfil' => array(PerfilAcesso::$cliente), 'pagina'=>'/home/seguranca'),
        )
    )
);

class ClienteController extends Controller {

  private $objRetorno;
  
  public function __construct(){
    $this->objRetorno['head'] = 'cliente/head';
    $this->objRetorno['pagina'] ='cliente/pedidos_recentes';
  }
  
  public function index() {
      self::render('cliente/index', $this->objRetorno);
  }
  
  public function historico(){
    $this->objRetorno['pagina'] = 'cliente/historico_pedidos';
    self::render('cliente/index', $this->objRetorno);
  }
  
  public function acesso(){
    $usuario = Session::getValue('user');
    $u = new UsuarioModel();
    $loggedUser = $u->select(array('id'=>$usuario['id']));
    $this->objRetorno['pagina'] = 'cliente/info_acesso';
    $this->objRetorno['usuario'] = $loggedUser;
    self::render('cliente/index', $this->objRetorno);
  }

  public function saveAcesso(){
    $usuario = Session::getValue('user');
    $dados = Uri::getPOST('json');
    $u = new UsuarioModel();
    $dados->id = $usuario['id'];
    unset($dados->repete_senha);
    unset($dados->senha_old);
    $ret = $u->saveOrUpdate($dados);
    print_r($ret);
  }
  
  public function pessoal(){
    $usuario = Session::getValue('user');
    $c = new ClienteModel();
    $cliente = $c->select(array('id'=>$usuario['id_usuario']));
    $dtn = $cliente[0]['data_nascimento'];
    $cliente[0]['data_nascimento'] = substr($dtn, 8)."/".substr($dtn,5,2)."/".substr($dtn,0,4);
    $cel = $cliente[0]['celular'];
    $cliente[0]['celular'] = "(".substr($cel, 0, 2).") ".substr($cel,2,4)."-".substr($cel,6,4);
    $cliente[0]['sexo'] = $cliente[0]['sexo'] == "m" ? "Masculino" : "Feminino"; 
    $this->objRetorno['cliente'] = $cliente;
    $this->objRetorno['pagina'] = 'cliente/dados_pessoais';
    self::render('cliente/index', $this->objRetorno);
  }
  
  public function editPessoal(){
    $usuario = Session::getValue('user');
    $c = new ClienteModel();
    $cliente = $c->select(array('id'=>$usuario['id_usuario']));
    $dtn = $cliente[0]['data_nascimento'];
    $cliente[0]['data_nascimento'] = substr($dtn, 8)."/".substr($dtn,5,2)."/".substr($dtn,0,4);
    $this->objRetorno['cliente'] = $cliente;
    $this->objRetorno['pagina'] = 'cliente/dados_pessoais_edit';
    self::render('cliente/index', $this->objRetorno);
  }

  public function savePessoal(){
    $usuario = Session::getValue('user');
    $dados = Uri::getPOST('json');
    $c = new ClienteModel();
    $dados->id = $usuario['id_usuario'];
    $dados->celular = preg_replace('/[^0-9]/', '', $dados->celular);
    $dt = split("/", $dados->data_nascimento);
    $dados->data_nascimento = $dt[2].'-'.$dt[1].'-'.$dt[0];
    $ret = $c->saveOrUpdate($dados);
    print_r($ret);
  }
  
  public function social(){
    $this->objRetorno['pagina'] = 'cliente/redes_sociais';
    self::render('cliente/index', $this->objRetorno);
  }

  public function endereco(){
    $usuario = Session::getValue('user');
    $e = new EnderecoModel();
    $this->objRetorno['enderecos'] = $e->buscarEnderecosPorUsuario($usuario['id_usuario']);
    for($i = 0; $i < sizeof($this->objRetorno['enderecos']); $i++){
      $cep = $this->objRetorno['enderecos'][$i]['cep'];
      $this->objRetorno['enderecos'][$i]['cep'] = substr($cep,0,2).'.'.substr($cep,2,3).'-'.substr($cep,5);
      $telefone = $this->objRetorno['enderecos'][$i]['telefone'];
      $this->objRetorno['enderecos'][$i]['telefone'] = '('.substr($telefone, 0, 2).') '.substr($telefone,2,4).'-'.substr($telefone,6);
    }
    $this->objRetorno['pagina'] = 'cliente/enderecos';
    self::render('cliente/index', $this->objRetorno);
  }
  
  public function editEndereco(){
    $usuario = Session::getValue('user');;
    $id = Uri::getPOST('id_e');
    if($id){
      $e = new EnderecoModel();
      $this->objRetorno['endereco'] = $e->buscarEndereco($usuario['id_usuario'], $id);
    }
    $this->objRetorno['pagina'] = 'cliente/enderecos_edit';
    self::render('cliente/index', $this->objRetorno);
  }
  
  public function saveEndereco(){
    $usuario = Session::getValue('user');
    $dados = Uri::getPOST('json');
    $principal = $dados->principal;
    $e = new EnderecoModel();
    unset($dados->bairro);
    unset($dados->cidade);
    $dados->criado = date('Y-m-d H:i:s');
    $dados->alterado = date('Y-m-d H:i:s');
    $dados->id_cliente_restaurante = $usuario['id_usuario'];
    $dados->ativo = 1;
    $dados->tipo_endereco = 'c';
    $dados->principal = 0;
    $dados->cep = preg_replace('/[^0-9]/', '', $dados->cep);
    $dados->telefone = preg_replace('/[^0-9]/', '', $dados->telefone);
    
    $ret = $e->saveOrUpdate($dados);
    
    if($principal){
      $e->enderecoPadrao($usuario['id_usuario'], $dados->id);
    }
    echo json_encode($ret);
  }
  
  public function enderecoPadrao(){
    $usuario = Session::getValue('user');
    $id = Uri::getPOST('id');
    $e = new EnderecoModel();
    $e->enderecoPadrao($usuario['id_usuario'], $id);
  }
  
  public function convite(){
    $usuario = Session::getValue("user");
    $this->objRetorno['pagina'] = 'cliente/convite';
    $conviteModel = new ConviteModel();
    $convites = $conviteModel->buscarPorUsuario($usuario['id_usuario']);
    if (!$convites){
      $convites = array();
    }
    while(count($convites) < 3){
      array_push($convites, null);
    }
    $num = 1;
    foreach($convites as &$c){
      $c['numero'] = $num++;
    }
    $this->objRetorno['convites'] = $convites;
    self::render('cliente/index', $this->objRetorno);
  }
  
  public function gravarConvite(){
    $usuario = Session::getValue("user");
    $dados = Uri::getPOST('json');
    $conviteModel = new ConviteModel();
    $convites = $conviteModel->buscarPorUsuario($usuario['id_usuario']);
    if(count($convites)<3){
      $novoConvite = array('id'=>NULL, 'id_cliente'=>$usuario['id_usuario'], 'nome'=>$dados->nome, 'email'=>$dados->email, 'criado'=>date("Y-m-d H:m:s"), 'alterado'=>date("Y-m-d H:m:s"));
      try{
        $conviteModel->insert($novoConvite);
        echo json_encode(1);
      }
      catch(Exception $err){
        echo json_encode($err);die();
      }
    }
  }
  
  public function buscarHistoricoPedidos(){
    $pedidoModel = new PedidoModel();
    $usuario = Session::getValue('user');
    $pedidos = $pedidoModel->buscarPedidosPorStatus($usuario['id_usuario'],'c',array(5,6));
    if(sizeOf($pedidos)==1&&$pedidos[0]['id_pedido']==NULL){
      echo json_encode(array());
    }
    else{
      echo json_encode($pedidos);
    }
  }
  
  public function buscarPedidosRecentes(){
    $pedidoModel = new PedidoModel();
    $usuario = Session::getValue('user');
    $pedidos = $pedidoModel->buscarPedidosPorStatus($usuario['id_usuario'],'c',array(2,3,4,5));
    if(sizeOf($pedidos)==1&&$pedidos[0]['id_pedido']==NULL){
      echo json_encode(array());
    }
    else{
      echo json_encode($pedidos);
    }
  }
  
  public function verPedido(){
    $dados = Uri::getPOST('json');
    $pedidoModel = new PedidoModel();
    $usuario = Session::getValue('user');
    $pedido = $pedidoModel->select(array('id'=>$dados->cod_pedido),null, TRUE);
    $totalPedido = $pedido['taxa_entrega'];
    $pedido['taxa_entrega'] = number_format($pedido['taxa_entrega'],2,',','.');
    $restauranteModel = new RestauranteModel();
    $restaurante = $restauranteModel->select(array('id'=>$pedido['id_restaurante']),null, TRUE);
    $enderecoModel = new EnderecoModel();
    $restaurante['endereco'] = $enderecoModel->buscarEnderecosPorUsuario($restaurante['id'],'r');
    $this->objRetorno['restaurante'] = $restaurante;
    $produtos = $pedidoModel->buscarProdutosPorPedido($dados->cod_pedido);
    foreach($produtos as &$p){
      $p['variacoes'] = $pedidoModel->buscarVariacoesPorProdutoPedido($p['id_produto_pedido']);
      $totalPedido += $p['preco'];
      $p['preco'] = number_format($p['preco'], 2, ',', '.');
    }
    $this->objRetorno['produtos'] = $produtos;
    $pedido['preco'] = number_format($totalPedido, 2, ',', '.');
    $this->objRetorno['pedido'] = $pedido;
    $this->objRetorno['browse'] = 1;
    $html = self::render('cliente/pedido_view', $this->objRetorno, TRUE);    
    $ret = array('html'=>$html);
    echo json_encode($ret);
  }
}
 
?>